Глава II
2.1. Вступление

Кривых, состоящих только из одних многочленных или рациональных сегментов, часто оказывается недостаточно. Их недостатки:

Решение использовать кривые (поверхности), которые кусочно-многочленные или кусочно рациональные. Рисунок 2.1 показывает кривую, `C(u)`, состоящей из `m(=3)` `n`-ой степени многочленных сегментов. `C(u)` определена на `u∈[0,1]`. Значения пара­метров `u_0=0<u_1<u_2<u_3=1` называются точки прерывания. Они отобража­ются в конечных точках трех многочленных сегментов. Обозначим сегменты от `C_i(u)`, `1≤i≤m`. Сегменты построены так, что они присоединиться с какой-то степеью не­преывности (не обязательно одинаковой на каждой точке прерывания). Обозначим `C_i^((j))` `j`-ую производную `C_i`. `C(u)` называется `C^k` непрерывная в точке прерывания `u_i` если `C_i^((j))(u_i)=C_(i+1)^((j))(u_i)` для всех `0≤j≤k`.

Рисунок 2.1. Кусочно-кубическая многочленная кривая с тремя сегментами.

Любая из стандартных многочленных форм может быть использована для пред­ставления `C_i(u)`. Рисунок 2.2 показывает кривую на рисунке 2.1 с тремя сегментами кубической формы Безье. `P_i^j` обозначает `i`-ую точку управления на `j`-ом сегменте.

Рисунок 2.2. Кривая на рисунке 2.1 показана с многочленными сегментами, представленными в форме Безье.

Если степень равна трем и точки прерывания `U={u_0,u_1,u_2,u_3}` остаются фик­сированными, и если мы позволим двенадцати контрольным точкам, `P_i^j`, произвольно ме­няться, мы получим векторное пространство, `V`, состоящее из всех кусочно кубиче­ских многочленов кривых `U`. `V` имеет размерность двенадцать, и кривая `V` может быть разрывной в `u_1` или `u_2`. Теперь предположим, что мы указываем (как показано на ри­сунке 2.2), что `P_3^1=P_0^2` и `P_3^2=P_0^3`. Это приводит к `V^0`, векторного пространства всех кусочно кубических многочленных кривых на U, которые, по крайней мере `C^0` непре­рывна всюду. `V^0` имеет размерность десять, и `V^0∈V`.

Получит непрерывность `C^1` немного сложнее. Рассмотрим `u=u_1`. Предположим, что `P_3^1=P_0^2`. Пусть

`v=(u-u_0)/(u_1-u_0)`   и  `w=(u-u_1)/(u_2-u_1)`

будут локальными параметрами на отрезках `[u_0,u_1]` и `[u_1,u_2]`, соответственно. Тогда `0≤v`, `w≤1`. `C^1` продолжается в `u_1` предполагает

`1/(u_1-u_0)C_1^((1))(v=1)=C_1^((1))(u_1)=C_2^((1))(u_1)=1/(u_2-u_1)C_2^((1))(w=0)`

из уравнения (1.10) следует, что

`3/(u_1-u_0)(P_3^1-P_2^1)=3/(u_2-u_1)(P_1^2-P_0^2)`

Таким образом   `P_3^1=((u_2-u_1)P_2^1+(u_1-u_0)P_1^2)/(u_2-u_0)`(2.1)

Уравнение (2.1) говорит, что `P_3^1` и `P_3^2` можно записать в терминах `P_2^1`, `P_1^2` и `P_2^2`, `P_1^3`, соответственно. Следовательно, `V^1`, векторное пространство всех `C^1` непрерывный кусочно кубических многочленных кривых на `U`, имеет размерность восемь, и `V^1∈V^0∈V`.

Отсюда ясно, что хранение и редактирование отдельных многочленных сегментов кривой кусочно-многочленной не идеальный метод для обработки таких кривых. Во-первых, избыточные данные должны храниться: двенадцать коэффициентов, когда только восемь, необходимые для `C^1` непрерывных кубических кривых, и только шесть для `C^2` непрерывных кубических кривых. Во-вторых, для Безье образуют непрерыв­ность `C(u)` зависящию от положения контрольных точек, следовательно, мало гибко­сти в управлении позиционированием точек при сохранении преемственности. Если разработчик хочет преемственности `C^1` доволен сегментов `C_1 (u)` и `C_3 (u)`, но хочет, чтобы изменить форму `C_2(u)`, ему не повезло: ни один из `C_2(u)`'ы контрольных точек не могут быть изменены. В-третьих, определение непрерывности кривой требуется вычисление (например, уравнения [2,1]).

Мы хотим, чтобы представление кривой вида

`C(u)=sum_{i=0}^nf_i(u)P_i`(2.2)

где `P_i` являются контрольными точками, и `{f_i(u),i=(0,…,n)}` являются кусочно-многочленными функциями, образующие базис векторного пространства всех кусочно многочленных функций желаемой степени и непрерывности (для фиксированного по­следовательности контрольных точек, `U={u_i},0≤i≤m`). Следует отметить, что непрерывность определяется базисной функцией, следовательно, контрольные точки могут быть изменены без изменения непрерывности кривой. Кроме того, `{f_i}` должен иметь "обычные" хорошие аналитические свойства, например, те, которые перечисле­ны в Разделе 1.3. Это гарантирует, что кривые определённые по формуле (2.2) имеют хорошие геометрические свойства, аналогичные кривым Безье, например, выпуклая оболочка, уменьшается вариации, преобразования инвариантности. Еще одно важное свойство, к которому мы стремимся в наших базисных функциях является то, что ло­кальная поддержка означает, что каждая `f_i(u)` отлична от нуля только на ограничен­ном числе под интервалов, а не всей области, `[u_0,u_m]`. `P_i` умножается на `f_i(u)`, дви­гаясь `P_i` влияет на форму кривой только на под интервалах где `f_i(u)` отличен от нуля.

Наконец, учитывая соответствующие кусочно-многочленные базисные функции, мы можем построить кусочно рациональные кривые

`C^w(u)=sum_{i=0}^nf_i(u)P_i^w`(2.3)

и нерациональные и рациональные поверхности тензорного произведения

`S(u,v)=sum_{i=0}^nsum_{j=0}^mf_i(u)g_j(v)P_(i,j)`

`S^w(u,v)=sum_{i=0}^nsum_{j=0}^mf_i(u)g_j(v)P_(i,j)^w`(2.4)

В оставшейся части этой главы мы подробно изучить так называемые базисные функции B-сплайнов. В главах 3 и 4 мы объединяем эти функции с трехмерными и четырехмерными контрольными точками для получения нерациональных и рациональ­ных кривых и поверхностей, соответственно.